package com.example.android2019.ch6service;

import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.example.android2019.R;

public class Service2Activity extends AppCompatActivity implements View.OnClickListener {
    Button btn_bind, btn_unbind;
    MyConn myConn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_service2);
        btn_bind = findViewById(R.id.ch6_service2_btn1);
        btn_unbind = findViewById(R.id.ch6_service2_btn2);
        btn_bind.setOnClickListener(this);
        btn_unbind.setOnClickListener(this);

         /*获取传递的数据*/
        Intent intent = this.getIntent();
        String a = intent.getStringExtra("test");
        Toast.makeText(this, a, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.ch6_service2_btn1:
                /* 绑定服务:
                *  传递3个参数：
                *  参数1：意图（从哪个Activity绑定哪个Service）
                *  参数2：ServiceConncention类型，用于实现与服务的连接（交互）
                *  参数3：Int类型，标记，BIND_AUTO_CREATE 表示自动创建服务*/
                Intent intent = new Intent(Service2Activity.this, MyService2.class);
                myConn = new MyConn();
                bindService(intent, myConn, BIND_AUTO_CREATE);
                Toast.makeText(this, "服务已绑定", Toast.LENGTH_SHORT).show();
                break;
            case R.id.ch6_service2_btn2:
                /* 解绑服务*/
                if (myConn != null) {
                    unbindService(myConn);
                    myConn = null;
                    Toast.makeText(this, "服务已解绑", Toast.LENGTH_SHORT).show();
                }
                break;
            default:
                break;
        }
    }

    /* 自定义内部类MyConn，实现ServiceConnection接口
    用于与服务的连接（交互）
    *  */
    class MyConn implements ServiceConnection {
        /**
         * 成功绑定服务（跟服务连接上了）之后调用该方法
         * 跟服务交互通过：IBinder service
         *
         * @param name
         * @param service
         */
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            Log.v("myService", "Activity中的onServiceConnected方法");
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    }
}
